// pages/profile/index.ts
Page({
  /**
   * 页面的初始数据
   */
  data: {
    userInfo: null,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
    //页面加载的时候,获取本地存储的用户数据给页面使用
    const userInfo = wx.getStorageSync('userInfo')
    // console.log('userInfo  ----->  ', userInfo)
    // 存储到data里面
    this.setData({
      userInfo,
    })
  },
  // 选择用户头像的回调函数
  onChooseAvatar(e) {
    // console.log(e)
    // 获取到的是临时地址 需要上传到服务器拿到在线地址  发送请求修改头像
    // e.detail.avatarUrl  ----->   http://tmp/QAqN6ACEFpWH2a1bf92234919b07fd88d7494edd904c.jpeg
    // console.log('e.detail.avatarUrl  ----->  ', e.detail.avatarUrl)
    // 把临时头像给解构出来
    const { avatarUrl } = e.detail
    // console.log(' avatarUrl ----->  ', avatarUrl)
    wx.uploadFile({
      //由于wx.uploadFile和wx.http不是同一个东西,所以http配置的基准路径这里不能使用
      // url: 'https://live-api.itheima.net/upload', //可以用完整路径
      url: wx.http.baseURL + '/upload', //wx.http.baseUrl获取精准路径 + 接口路径
      filePath: avatarUrl, //要上传文件资源的路径(本地路径,也就是临时地址)
      name: 'file', //文件对应的key 通过key获取二进制文件 通过接口得知上传文件二进制为file所以这里填写file
      header: {
        Authorization: `Bearer ${getApp().token}`, //通过应用实例获取到token设置到请求头上
      }, //因为uploadFile不会通过拦截器,所以不会带上header,所以需要手动配置header
      formData: {
        type: 'avatar', //接口文档要求填写
      },
      // 接口调用成功的回调函数
      success: async (res) => {
        // console.log('res  ----->  ', res)
        //由于返回来的数据是JSON字符串,所以需要转为对象
        const data = JSON.parse(res.data)
        // console.log('data  ----->  ', data)
        // 获取在线地址
        const avatar = data.data.url
        // console.log(' avatar ----->  ', avatar)

        //发送请求修改头像
        const resAvatar = await wx.http({
          url: '/userInfo',
          method: 'PUT',
          data: {
            avatar,
          },
        })
        console.log('resAvatar  ----->  ', resAvatar)

        // 提示用户
        wx.utils.toast('修改头像成功')

        // 实时更新 data中的用户头像 页面实时变化
        //即时刷新头像
        this.setData({
          //简写修改对象中某个属性的写法
          'userInfo.avatar': avatar,
        })
      },
    })
  },
  //输入框事件
  async onChange(e) {
    console.log('e  ----->  ', e)
    const nickName = e.detail
    console.log('nickName  ----->  ', nickName)
    //发请求修改用户昵称
    const resName = await wx.http({
      url: '/userInfo',
      method: 'PUT',
      data: {
        nickName,
      },
    })
    console.log(' resName ----->  ', resName)
    // 提示用户修改成功
    wx.utils.toast('修改昵称成功')
    //实时更新
    this.setData({
      // 修改对象的简单写法
      'userInfo.nickName': nickName,
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
})
